package com.twetec.cms.service.website.impl;

import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.twetec.cms.common.util.validate.ValidateUtil;
import com.twetec.cms.dao.mapper.website.ColumnMapper;
import com.twetec.cms.dao.mapper.website.SiteColumnMapper;
import com.twetec.cms.dao.mapper.website.WebsiteTemplateMapper;
import com.twetec.cms.model.po.website.ColumnPO;
import com.twetec.cms.model.po.website.SiteColumnPO;
import com.twetec.cms.model.po.website.WebsiteTemplatePO;
import com.twetec.cms.service.website.WebsiteTemplateService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.io.File;
import java.util.List;

/**
 * <p>
 * 模板表 服务实现类
 * </p>
 *
 * @author zhxl
 * @since 2021-10-04
 */
@Service
public class WebsiteTemplateServiceImpl extends ServiceImpl<WebsiteTemplateMapper, WebsiteTemplatePO> implements WebsiteTemplateService {

    @Autowired
    private WebsiteTemplateMapper websiteTemplateMapper;

    /**
     * 校验模板编码是否重复
     * @param siteId
     * @param templateId
     * @param code
     * @return
     */
    @Override
    public Boolean checkTemplateCode(Long siteId, Long templateId, String code) {

        // 校验模型编码是否为小写和下划线
        if (!ValidateUtil.LetterINumber(code)) return false;

        // 看是否传入了当前模板的id
        WebsiteTemplatePO currentTemplatePO = null;
        if (templateId != null && ValidateUtil.Number(templateId)) {
            currentTemplatePO = websiteTemplateMapper.selectById(templateId);
        }

        QueryWrapper<WebsiteTemplatePO> templateQueryWrapper = new QueryWrapper<>();
        templateQueryWrapper.eq("SITE_ID", siteId);
        List<WebsiteTemplatePO> templatePOList = websiteTemplateMapper.selectList(templateQueryWrapper);

        // 如果站点下没有模板，返回true
        if (templatePOList == null || templatePOList.size() == 0) return true;

        // 如果站点下有模板
        for (WebsiteTemplatePO templatePO : templatePOList) {

            if (currentTemplatePO != null) {

                // 修改情况下，传入的模型id和遍历到的模型id相同的话，跳过。
                if (templatePO.getId().equals(currentTemplatePO.getId())) continue;

                // 不同的话就比较编码，相同就返回false
                if (templatePO.getCode().equals(code)) {
                    return false;
                }

            } else {

                // 新增的情况下，如果传入的编码和已有模型的编码相同的话，返回false
                if (templatePO.getCode().equals(code)) {
                    return false;
                }
            }
        }
        return true;
    }

}
